[iOS] Firebase Storage上のファイルの削除とエラーハンドリングについて
はじめに
こんにちは。モバイルアプリサービス部の平屋です。
前回の記事「[iOS] Firebase Storage上のファイルをダウンロードする」に引き続き、Firebase Storageの使用方法を紹介します。
本記事では、iOSアプリでFirebase Storage上のファイルを削除する方法とエラーハンドリングを行う方法を紹介します。
iOSアプリでFirebase Storageを使用開始するための作業については、前々回の記事で解説していますので、あわせてご覧ください。
検証環境
- macOS Sierra Version 10.12.4
- Xcode Version 8.3.2
目次
- ファイルを削除する
- エラーをハンドリングする
ファイルを削除する
さっそく実装を紹介していきます。
ファイルのアップロード/ダウンロードを実行する場合と同様に、まずは対象ファイルへの参照を持つFIRStorageReferenceオブジェクトを作成します。
// FIRStorageReferenceを作成 let storage = FIRStorage.storage() let storageRef = storage.reference(forURL: "gs://<your-firebase-storage-bucket>") let imageRef = storageRef.child("image.jpg")
そして、FIRStorageReferenceのdelete(completion:)
メソッドを使用してファイルの削除を実行します。
imageRef.delete { error in if error != nil { print("Uh-oh, an error occurred!") } else { print("delete success!!") } }
エラーをハンドリングする
ファイルのアップロード、ダウンロード、削除などの処理を行う場合、以下のような理由でエラーが発生する可能性があります。
- 対象のファイルが存在しない
- 対象のファイルへのアクセス権がユーザーにない
各処理を行うメソッドに渡すクロージャの引数(Errorプロトコルに適合したオブジェクト)を使用すれば、エラーの内容に応じた処理を実行することができます。
エラーのドメインやコードは以下のリファレンスやヘッダファイルで確認できます。
- FirebaseStorage Framework Reference
- FirebaseStorage.framework > Headers > FIRStorageConstants.h
以下の実装例では、ファイル削除実行時に対象ファイルが存在しない場合にログを出力します。
imageRef.delete { error in if let error = error { let nsError = error as NSError if nsError.domain == FIRStorageErrorDomain && nsError.code == FIRStorageErrorCode.objectNotFound.rawValue { print("目的の参照にオブジェクトが存在しません") } } else { print("delete success!!") } }
さいごに
本記事では、iOSアプリでFirebase Storage上のファイルを削除する方法とエラーハンドリングを行う方法を紹介しました。
これまでの記事で、iOSアプリからFirebase Storageに対する各種操作を行なう方法を紹介してきましたが、Androidアプリやウェブの場合でも、ほとんど同じ実装プロセスになると思います。
- Firebase Storage SDK を導入する
- 参照を作成する
- アップロード、ダウンロード、削除などの操作を行なう